My Deep Learing Note

神经网络基础

  • 神经网络(Artificial Neural Network, ANN)是一种通过模拟生物神经网络进行数据拟合的机器学习算法模型,超过三层的神经网络称为深度神经网络或深度学习。它由大量的人工神经元组成,这些神经元相互连接并通过权重来传递信息。
数据归一化
  • 数据进入神经网络前需要进行归一化步骤。常用的归一化方法有等。

    注意

    注意:归一化与标准化是两个不同的概念。归一化是指将数据缩放到区间内,标准化指的是将数据转换成均值为,标准差为的分布。

    (1) :设表示第个样本的第个特征,为特征数量,则的计算公式为:

    注释

    其中,是一个小常数,用来防止除以零的情况。可学习参数进行用于缩放和平移,使得模型可以学习到最佳的归一化效果。
    每个元素的值减去样本每个特征的平均值,再除以标准差,最后再进行缩放和平移。

    (2) :设每个特征的均值为,方差为,则的计算公式为

    注释

    这里的是可学习的参数,对于每个特征维度都有一个对应的值。在训练过程中,这些参数会通过反向传播算法进行更新。

    (3)

    注释

    计算更简便,节约了计算速度,

前向传播过程
  • 前向传播(Forward Propagation)指神经网络中从输入层到输出层的数据传递过程。在这个过程中,输入数据从输入神经元开始,经过多层神经元的加权求和后经过激活函数生成输出结果。具体步骤如下:
    img/DNN.png

    Note

    其中,表示神经网络的输出,表示‌激活函数,表示第个输入数据的权重,表示第个输数据号,为偏置项。前向传播的主要目的是基于当前的权重和偏置参数,计算模型对于给定输入的预测输出。

  • 激活函数

    在神经网络中除了线性层外往往还需要加入激活函数,没有激活函数的神经网络只是线性函数,无法拟合曲线,任何一条曲线都能用多条线性函数来逼近,而激活函数使神经网络具有分段的能力,根据万能逼近原理(universal approximation theorrm),3层神经网络可以逼近任意曲线。以下是神经网络中最常见的三个激活函数:
    (1) 激活函数:

    注释

    函数反向传播求导简单,减少计算量

    (2) 激活函数:

    注释

    是输入向量,表示逐元素相乘。函数将输入向量通过两个不同的线性变换,得到了两个不同的向量,其中一个向量不经过激活函数,另一个向量经过函数后其元素被映射到之间,若元素为,则另一向量对应位置的元素不变,若为零则不允许通过,感觉有点类似于的门控结构,个人理解的作用类似于中的遗忘门。

    (3) 激活函数:

    注释

    是一个可学习的超参数,默认为函数的独特之处在于其非线性和自适应性,当输入接近时,行为类似函数,而在其他区域,其斜率可以根据输入值进行自我调整。相比传统的无法调整的一条直线更好。

    (4) 激活函数:

    注释

    函数相当于把结合在了一起,把当中的换成了,结合了二者的优点,
    函数:LlaMa2模型采用的是函数,就是时的结合的函数

  • 损失函数

    神经网络通过计算预测值与真实值之间的误差,再将误差进行反向传播,从而更新权重。

    (1) 常见损失函数:常用的损失函数有等,计算公式如下:

    注释

    其中,是第个真实值,是模型第个预测值,为数据总数。

    • 是预测值与真实值之差的平方的平均值,函数通过差值的平方放大误差的影响;
    • 实际上是的平方根,保留了的特性,但它将误差单位转换回原始数据的尺度,使得解释更加直观;
    • 是预测值与真实值之差的绝对值的平均值。它比更能抵抗异常值的影响,因为绝对值不会像平方那样放大误差。

    (2) 交叉熵损失 (Cross-Entropy Loss):

    不同的问题交叉熵损失的计算公式也不同,对于二分类问题,交叉熵损失的计算公式如下:

    注释

    其中,是模型预测第个观测属于正类的概率,是第个观测的真实标签(通常为)。

    对于多分类问题,交叉熵损失的计算公式如下:

    注释

    其中,是类别的数量,是指示变量,若第个观测属于第类,则为,否则为是模型预测第个观测属于第类的概率。
    交叉熵损失用于分类问题,特别是当输出是概率分布时。它度量了两个概率分布之间的差异,鼓励模型预测与真实标签尽可能接近的概率分布。

反向传播过程
  • 神经网络的权重更新通过反向传播实现,参见周志华-机器学习p101

卷积神经网络


循环神经网络

循环神经网络(Recurrent Neural Network, RNN)又叫递归神经网络,很简单,相比于普通的全连接神经网络就是把上一次训练的权重与这一次训练的输出值同时输入神经网络。循环神经网络的结构如下:

img/Pasted image 20240603002024.png

  • 计算公式:
    注释

    为输入内容,为输出内容,为权重,为神经元,为输出的个数​.
    根据问题的需要,循环神经网络的隐层可以是全连接的,也可以是一对一的。此外,假设每一层级之间的权重是相同的,可降低计算量。循环神经网络的常见变体有长短时记忆神经网络和门控循环单元。

长短时记忆神经网络

长短时记忆神经网络(long short-term memory neural network, LSTM)是一种主要用于处理时序问题的神经网络结构,由循环神经网络改进而来。相比于传统的循环神经网络,长短时记忆神经网络能够深入挖掘时间序列数据中的固有规律并具有长时记忆功能。的结构包括输入门,遗忘门,输出门,其结构图如下:

img/lstm.png

  • 遗忘门:

    注释

    式中,输入值和上一时刻的输出值经过激活函数后,生成一个~之间的向量,遗忘门通过对记忆细胞的点乘操作对记忆内容进行选择性遗忘,若向量中某元素的值为,则经过点乘后记忆细胞中对应值全部遗忘,若向量中某元素的值为,则全部保留。分别为遗忘门的权重,为偏置项。

  • 记忆门:

    注释

    式中,输入值和上一时刻的输出值经过激活函数后,生成一个0~1之间的向量,输入值和上一时刻的输出值再经过激活函数后放缩到成为候选细胞,候选细胞只是起到一个过渡的作用,两者之间经过元素相乘运算清除部分信息,这一步相当于选择要记忆什么内容,再经过与记忆细胞的元素相加运算将候选细胞的记忆内容记忆加到记忆细胞中。分别为记忆门的权重,为偏置项。为候选细胞权重,为偏置项。

  • 记忆细胞:

    注释

    记忆细胞代表长期记忆,经过与遗忘门的点乘操作选择性遗忘和与记忆门的元素相加操作选择性记忆得到。

  • 输出门:

    注释

    输出门选择要输出什么内容,输入值和上一时刻的输出值经过sigmoid激活函数后生成元素为~之间的向量。为权重,为偏置项。输入门再与记忆细胞进行点乘操作,将记忆细胞中的信息提取出来,得到最终输出再参与到下一时刻的训练。

  • 具体流程:
    img/lstmgif图.gif

    Note

    LSTM的门展开后就是Dense层
    LSTM应该记忆什么遗忘什么取决于门的权重,由网络训练得到

门控循环单元

门控循环单元(gated recurrent unit, GRU)由长短时记忆神经网络改进而来,门控循环单元与长短时记忆神经网络效果相似,但门控循环单元模型更简洁,的结构与计算公式如下所示:

img/gru.png

  • 重置与更新门:

    注释

    分别为时刻的重置门和更新门,是时刻的输出,是时刻的输入,为重置门的权重,为重置门的偏置项,为更新门的权重,为更新门的偏置项,均为0~1之间的向量。

  • 隐藏状态

    注释

    为候选隐藏状态,表示遗忘,反之表示记忆,为隐藏状态的权重,为隐藏状态的偏置项。
    有权重的地方就表明这里有一个层。如果将重置门设为,更新门设为设为,就是一个标准的循环神经网络。

  • 具体流程:
    img/grugif图.gif


Transformer

  • Transformer结构框架图:
    img/transformer.png

  • 输入部分

    (1) 词嵌入():

    注释

    两边的分别代表样本和标签数据,是一个单层的全连接层,经过的转换后可以表示单词或者语句的语义

    (2) 位置编码( ):

    词向量偶数位置使用,奇数位置使用,将位置信息嵌入词向量中,原始版本的Transformer采用三角函数编码( ):

    注释

    表示位置索引(从开始),是词嵌入向量的维度索引,是模型中词嵌入向量的维度。。RNN和LSTM是将文本一个词一个词输入网络,而transformer是并行计算的,意味着词与词之间不存在顺序关系,所以需要将位置信息嵌入词向量中,PE嵌入的是却对位置信息,通过频率、波长与位置的关系把信息嵌入词向量中。

  • Encoder部分

    整个Transformer可以分为两个部分。其中,可分成输入部分、注意力机制和前馈神经网络三个部分

    (1) 自注意力机制(-):zhihu

    的计算:

    注释

    是经过词嵌入与位置编码后的输入,是三个可被训练的参数矩阵。是键对应的向量维度,即的维度。关于的作用:表示查询权重,相当于做数量积操作,数量级可以反映两个向量的相似度,结果越大表明两个向量的信息相似度越高,的作用是确保权重之和为,为了避免规模差异对相似度计算产生影响,通常会对向量进行缩放。为什么要除以

    (2) 多头自注意力机制(- -):CSDN

    自注意力机制在对当前位置信息进行编码时,会过度的将注意力集中于自身的位置,因此引入多头自注意力机制。多头自注意力机制的步骤如下:

    首先,定义,生成多组
    对多组进行计算,生成多个
    将多组进行拼接(cancat),再乘以矩阵做一次线性变换降低维度,得到最终的

    注释

    nhead需要能被d_model整除,因为所有头的维度之和等于d_model。即每个注意力头的输出维度是d_model/nhead.

    (3) 残差结构与前馈神经网络:

    前馈神经网络公式:

    注释

    激活函数为ReLU。残差结构参考CSDN

  • Dncoder部分

    (1) - -

    -的计算公式如下:

    注释

    由于transformer在训练时是将数据直接全部输入网络,所以需要使decoder看不到未来的信息。计算很简单,就是加一个mask矩阵

    (2) -

    -的计算公式如下:

    注释

    Encoder的最后一个模块的输出,输入进每个Decoder中,作为Decoder Multi-Head Self-Attention的

Transformer相关变体
  • 是由公司开源的大语言模型,于日发布,包括三个版本。是Transformer的变体,相比Transformer,其结构与特点如下:

    (1) - -

    注释

    Llama模型仅采用了Transfomer的解码器结构,相比Transfomer的样本和标签数据分别从编码器和解码器输入,直接将样本和标签拼接在一起输入到神经网络

    (2) - -

    注释

    相比Transform的模型采用计算更简便,节约了计算速度,此外,还将层放在了注意力的前面,为啥不知道

    (3) 三角函数编码 → 旋转位置编码(RoPE):论文科学空间

    以二维词向量为例,将自注意力计算过程中的的与二维旋转矩阵相乘:

    注释

    其中,是一个常量,它的具体原理是让词向量在空间上发生旋转,从而把位置信息嵌入到词向量中,这也是为什么它叫旋转位置编码。可以看到相对位置信息相乘后嵌入到了词向量中,形象过程可以看下图:

img/RoPE.png

  • 词向量一般不可能是二维,要想对高维词向量进行旋转,需要将旋转矩阵拓展到高维:
  • 可以应用分块矩阵将旋转矩阵简化:
  • 计算公式改写为以下形式,不展开了:

    注释

    prompt的理解是另外一个小型的训练样本适时的调整大模型的参数

  • (1) - -

    注释

    BERT模型就是Transformer左边的Encodeer结构,2018年10⽉由Google AI研究院提出,其架构图如下:

img/Pasted image 20240613235246.png

  • (1) - -

    注释

    GPT模型,全称为‌(Generative Pre-trained Transformer),是由‌OpenAI团队开发的一种基于深度学习的自然语言处理模型。GPT使用Transformer的Decoder作为其架构,但在Decoder的基础上做了一些改动,去掉了Cross-Attention。

img/Pasted image 20240831160909.png